﻿Public Class clsInhTrSchemat
    Inherits clsTrSchemat

#Region "Attributes"

    Private mvarPracownik As clsPracownik

    Private mvarPozycjeSchematu As Collection(Of clsInhTrPozycjeSchematu)
    Private mvarPozycjeSchematuDel As Collection(Of clsInhTrPozycjeSchematu)

    Private mvarMaterialProdukcyjny As Collection(Of clsInhTrMaterialProdukcyjny)

#End Region

#Region "Properties"

    Public Property Pracownik() As clsPracownik
        Get
            Return mvarPracownik
        End Get
        Set(ByVal value As clsPracownik)
            mvarPracownik = value
        End Set
    End Property

    Public Property PozycjeSchematu() As Collection(Of clsInhTrPozycjeSchematu)
        Get
            Return mvarPozycjeSchematu
        End Get
        Set(ByVal value As Collection(Of clsInhTrPozycjeSchematu))
            mvarPozycjeSchematu = value
        End Set
    End Property

    Public Property PozycjeSchematuDel() As Collection(Of clsInhTrPozycjeSchematu)
        Get
            Return mvarPozycjeSchematuDel
        End Get
        Set(ByVal value As Collection(Of clsInhTrPozycjeSchematu))
            mvarPozycjeSchematuDel = value
        End Set
    End Property

    Public Property MaterialProdukcyjny() As Collection(Of clsInhTrMaterialProdukcyjny)
        Get
            Return mvarMaterialProdukcyjny
        End Get
        Set(ByVal value As Collection(Of clsInhTrMaterialProdukcyjny))
            mvarMaterialProdukcyjny = value
        End Set
    End Property

#End Region

#Region "Methods"

    Public Sub New()
        MyBase.New()
        mvarPracownik = New clsPracownik()
        mvarPozycjeSchematu = New Collection(Of clsInhTrPozycjeSchematu)
        mvarPozycjeSchematuDel = New Collection(Of clsInhTrPozycjeSchematu)
        mvarMaterialProdukcyjny = New Collection(Of clsInhTrMaterialProdukcyjny)
    End Sub

    Public Sub New(ByVal ID As Integer, ByVal lvarDbHolder As clsDataBase)

        MyBase.New(ID, lvarDbHolder, VAR_ERROR_HANDLER)

        mvarPracownik = New clsPracownik(MyBase.PracownikId.ToString(), lvarDbHolder, VAR_ERROR_HANDLER)

        'POZYCJE SCHEMATU PRODUKCJI
        mvarPozycjeSchematuDel = New Collection(Of clsInhTrPozycjeSchematu)
        mvarPozycjeSchematu = New Collection(Of clsInhTrPozycjeSchematu)
        Dim lvarTabel As DataTable = PobierzWszystkiePozycjeSchematu(lvarDbHolder, ID)

        If Not lvarTabel Is Nothing Then
            For Each lvarRow As DataRow In lvarTabel.Rows
                mvarPozycjeSchematu.Add(New clsInhTrPozycjeSchematu(CInt(lvarRow.Item("id").ToString()), lvarDbHolder))
            Next
        End If

        'MATERIAL PRODUKCYJNY
        mvarMaterialProdukcyjny = New Collection(Of clsInhTrMaterialProdukcyjny)
        lvarTabel = PobierzIdMaterialuProdukcyjnego(lvarDbHolder, ID)

        If Not lvarTabel Is Nothing Then

            For Each lvarRow As DataRow In lvarTabel.Rows
                '   MessageBox.Show(lvarRow.Item("id"))
                mvarMaterialProdukcyjny.Add(New clsInhTrMaterialProdukcyjny(CInt(lvarRow.Item("id")), lvarDbHolder))
            Next
        End If

    End Sub

    Public Overloads Sub Save(ByVal lvarDbHolder As clsDataBase)

        MyBase.Save(lvarDbHolder, VAR_ERROR_HANDLER)

        For Each lvarPozycja As clsInhTrPozycjeSchematu In mvarPozycjeSchematuDel
            lvarPozycja.Delete(lvarDbHolder)
        Next

        For Each lvarPozycja As clsInhTrPozycjeSchematu In mvarPozycjeSchematu
            lvarPozycja.SchematId = MyBase.Id.ToString()
            lvarPozycja.WymiarWejsciowy = Replace(lvarPozycja.WymiarWejsciowy, ",", ".")
            lvarPozycja.WymiarKoncowy = Replace(lvarPozycja.WymiarKoncowy, ",", ".")
            lvarPozycja.Save(lvarDbHolder)
        Next

    End Sub

    Public Overloads Sub Delete(ByVal lvarDbHolder As clsDataBase)

        For Each lvarPozycje As clsInhTrPozycjeSchematu In mvarPozycjeSchematu
            lvarPozycje.Delete(lvarDbHolder)
        Next
        MyBase.Delete(lvarDbHolder, VAR_ERROR_HANDLER)

    End Sub

    Shared Function PobierzWszystkiePozycjeSchematu(ByVal lvarDbHolder As clsDataBase, IdSchematu As Integer) As DataTable

        Dim lvarReader As OdbcDataReader = Nothing
        Dim lvarReturn As DataTable

        If lvarDbHolder.IsOpen Then
            Dim lvarSqlRunner As New clsSqlRunner(lvarDbHolder, "queries_application_tracking", "cls_schemat", 1, VAR_ERROR_HANDLER)

            With lvarSqlRunner
                .AddParameter("p_id", IdSchematu.ToString())
                lvarReader = .ExecuteQuery
            End With

            If lvarReader.HasRows Then
                lvarReturn = New DataTable
                lvarReturn.Load(lvarReader)
            End If

        End If

        Return lvarReturn

    End Function

    Shared Function PobierzIdMaterialuProdukcyjnego(ByVal lvarDbHolder As clsDataBase, Id As Integer) As DataTable

        Dim lvarReader As OdbcDataReader = Nothing
        Dim lvarReturn As DataTable

        If lvarDbHolder.IsOpen Then
            Dim lvarSqlRunner As New clsSqlRunner(lvarDbHolder, "queries_application_tracking", "cls_schemat", 2, VAR_ERROR_HANDLER)

            With lvarSqlRunner
                .AddParameter("p_id", Id.ToString())
                lvarReader = .ExecuteQuery
            End With

            If lvarReader.HasRows Then
                lvarReturn = New DataTable
                lvarReturn.Load(lvarReader)
            End If

        End If

        Return lvarReturn

    End Function

    Shared Function PobierzIdPozycjiZlecenia(ByVal lvarDbHolder As clsDataBase, IdSchematu As Integer) As Integer

        Dim lvarReader As OdbcDataReader = Nothing
        Dim lvarReturn As Integer

        If lvarDbHolder.IsOpen Then
            Dim lvarSqlRunner As New clsSqlRunner(lvarDbHolder, "queries_application_tracking", "cls_schemat", 3, VAR_ERROR_HANDLER)

            With lvarSqlRunner
                .AddParameter("p_id", IdSchematu.ToString())
                lvarReader = .ExecuteQuery
            End With

            If lvarReader.HasRows Then
                lvarReturn = CInt(IIf(IsDBNull(lvarReader.Item("pozycje_zlecenia_id")), -1, lvarReader.Item("pozycje_zlecenia_id")))
            End If

        End If

        Return lvarReturn

    End Function

#End Region

End Class
